package continuity;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.Timer;
import java.util.TimerTask;

/**
 * Zetor csapat szekelton
 * 
 * A program célja hogy a modellről eldönthető legyen, hogy a feladat egy helyes
 * megoldását nyújtja.
 * 
 * @author Balogh Peter Tamas
 * @author Gál István László
 * @author Kárász Gábor
 * @author Simon Endre András
 * @author Szabó Alex
 */

public class Clock extends TimerTask {
    
    private Game game;
    private int period;
    
    
    // a szkeleton segítésére szolgáló
    // változók
    // ClassName - osztály neve, osztályszintű változó
    // name - objektum neve
    final static public String className = "Clock";
    public String name;
    private javax.swing.Timer timer;
    private int cntr = -1;
    //
    
    // A konstruktorok kaptak egy segítő paramétert,
    // az objektum elnevezésének megkönnyítésére.
    public Clock(Game g, String n) {
        game = g;
        name = n;
        ActionListener listener = new ActionListener() {

            @Override
            public void actionPerformed(ActionEvent e) {
                run();
            }
        };
        this.period = 1000;
        timer=new javax.swing.Timer(0, listener);
    }
    
    public String getName() {
        return name;
    }
    
    // setPeriod(int period)
    // beállítja az óra periódusát, a paraméterben megadottra
    public void setPeriod(int period) {
       String classInfo= name + "(" + Clock.className +")::run(): void";
       this.period = period;

    }
    
    // callback a timerhez
    @Override
    public void run() {
       String classInfo= name + "(" + className +")::run(): void";
       Proto.output(getName(), getClass().toString(), "Ticked", "", "");
       game.Tick();
       if(cntr != -1 && (--cntr) == 0) {
           cntr = -1;
           timer.stop();
       }
    }
    
    //elinditja az orat
    public void start(int cnt) {
        cntr = cnt;
        timer.setDelay(period);
        timer.start();
    }
    
}

